home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)zn.d64
/
proc.u'graph
< prev
next >
Wrap
Text File
|
2007-03-01
|
12KB
|
351 lines
0210 ╨╥╧├ U'GRAPH(TYPE,REP,╥┼╞ VALUES(,),╥┼╞ SCALE$(,),╥┼╞ LABELS$()) ├╠╧╙┼─
0220 // ┴.├.═ILLEST - 18.10.86 VERSION
0225 // 23.11.86 X SCALES IN COLUMNS
0230 ╒╙┼ GRAPHICS
0240 GRAPHICSCREEN(0)
0250 ╒╙┼ SYSTEM
0260 ─╔═ N$ ╧╞ 6, HI(26)
0270 STORE(1)
0280 WINDOW(INQ(19),INQ(20),INQ(21),INQ(22))
0290 SET'VARIABLES
0300 ╨╥╧├ SET'VARIABLES
0310 XSPACE:=INQ(20)-INQ(19); YSPACE:=INQ(22)-INQ(21)
0320 ├┴╙┼ SCALE$(0,1)(1) ╧╞ // X SCALE
0330 ╫╚┼╬ "N"
0340 XST:=╓┴╠(SCALE$(1,1))
0350 XEND:=╓┴╠(SCALE$(2,1))
0360 XN:=╓┴╠(SCALE$(3,1))
0370 XI:=(XEND-XST)/XN
0380 X'CHAR'LEN:=FIND'NO'LENGTH(XST,XEND,XI)
0390 ╫╚┼╬ "A"
0400 XST:=1; XEND:=╓┴╠(SCALE$(0,1)(2:)); XN:=XEND-1
0410 X'CHAR'LEN:=FIND'LENGTH(1,╓┴╠(SCALE$(0,1)(2:)),1,1) // IN PIXELS
0420 ╫╚┼╬ "V"
0430 XST:=╓┴╠(SCALE$(1,1)); XEND:=╓┴╠(SCALE$(2,1)); XN:=╓┴╠(SCALE$(3,1))
0440 X'CHAR'LEN:=FIND'LENGTH(4,╓┴╠(SCALE$(0,1)(2:))*2+2,2,1)
0450 ┼╬─├┴╙┼
0460
0470 ├┴╙┼ SCALE$(0,2)(1) ╧╞ // Y SCALE
0480 ╫╚┼╬ "N"
0490 YST:=╓┴╠(SCALE$(1,2))
0500 YEND:=╓┴╠(SCALE$(2,2))
0510 YN:=╓┴╠(SCALE$(3,2))
0520 YI:=(YEND-YST)/YN
0530 Y'CHAR'LEN:=FIND'NO'LENGTH(YST,YEND,YI)
0540 ╫╚┼╬ "A"
0550 YST:=0; YEND:=╓┴╠(SCALE$(0,2)(2:)); YN:=YEND
0560 Y'CHAR'LEN:=FIND'LENGTH(1,╓┴╠(SCALE$(0,2)(2:)),1,2) // IN PIXELS
0570 ╫╚┼╬ "V"
0580 YST:=╓┴╠(SCALE$(1,2)); YEND:=╓┴╠(SCALE$(2,2)); YN:=╓┴╠(SCALE$(3,2))
0590 Y'CHAR'LEN:=FIND'LENGTH(4,╓┴╠(SCALE$(0,2)(2:))*2+2,2,2)
0600 ┼╬─├┴╙┼
0610 // ORIGINS: OX SCALE; OX-4 AXIS
0620 // OY SCALE & AXIS ORIGIN
0630 OY:=INQ(21)+X'CHAR'LEN+4 // ORIGIN
0640 OX:=INQ(19)+Y'CHAR'LEN+6 // ORIGIN
0650 XI:=(XEND-XST)/XN; YI:=(YEND-YST)/YN
0660 PAIRS:=VALUES(0,1)
0670 // ALLOW FOR SCALE CHARS & LABELS - 16 FOR 4 DIGIT XEND NUMBERS
0680 XPIX:=XSPACE-(Y'CHAR'LEN+6+12)
0690 YPIX:=YSPACE-(X'CHAR'LEN+4+28)
0700 ┼╬─╨╥╧├ SET'VARIABLES
0710 TEXTSTYLE(1,1,0,0)
0720 VIEWPORT(OX,OX+XPIX,OY,OY+YPIX)
0730 WINDOW(XST,XEND,YST,YEND) //SCALE SET HERE
0740 ├┴╙┼ REP ╧╞
0750 ╫╚┼╬ 1
0760 VIEWPORT(OX-3,OX+XPIX+12,OY+1,OY+YPIX+28)
0770 CLEAR
0780 ╔╞ SCALE$(0,2)(1)="V" ╘╚┼╬ V'GRID(2)
0790 ╔╞ SCALE$(0,1)(1)="V" ╘╚┼╬ V'GRID(1)
0800 CROSS'AXES
0810 ╔╞ VALUES(0,2)=╘╥╒┼ ┴╬─ ╘╚┼╬ TYPE<>1 ╘╚┼╬ GRID
0820 ╫╚┼╬ 2
0830 VIEWPORT(HI(19),HI(20),HI(21),HI(22))
0840 CROSS'AXES
0850 ╫╚┼╬ 0
0860 // VIEWPORT TO FULL GRAPHWINDOW
0870 VIEWPORT(HI(19),HI(20),HI(21),HI(22))
0880 CLEAR
0890 TICK:=2 //SIZE OF A GRADUATION MARK
0900 GAP:=4 //GAP BETWEEN TICK AND TEXT
0910 H:=8 //TEXT HEIGHT
0920 W:=8 //TEXT WIDTH
0930 ╞╧╥ AXIS:=0 ╘╧ 1 ─╧
0940 TEXTSTYLE(1,1,0,1)
0950 MOVETO(XST-4/INQ(30),YST)
0960 ├┴╙┼ AXIS ╧╞
0970 ╫╚┼╬ 0
0980 DRAWTO(XEND+4/INQ(30),YST) //X AXIS
0990 PLOTTEXT(XEND+6/INQ(30),YST-5/INQ(31),"X")
1000 ╔╞ SCALE$(0,1)(1)="N" ╘╚┼╬
1010 SCALE'DIVISIONS:=╓┴╠(SCALE$(3,1))
1020 ┼╠╙┼
1030 SCALE'DIVISIONS:=╓┴╠(SCALE$(0,1)(2:))-1
1040 ┼╬─╔╞
1050 ╫╚┼╬ 1
1060 DRAWTO(XST-4/INQ(30),YEND)
1070 PLOTTEXT(XST-(Y'CHAR'LEN/2+10)/INQ(30),YEND+9/INQ(31),"Y")
1080 ╔╞ SCALE$(0,2)(1)="N" ╘╚┼╬
1090 SCALE'DIVISIONS:=╓┴╠(SCALE$(3,2))
1100 ┼╠╔╞ SCALE$(0,2)(1)="A" ╘╚┼╬
1110 SCALE'DIVISIONS:=╓┴╠(SCALE$(0,2)(2:))
1120 ┼╠╙┼
1130 SCALE'DIVISIONS:=╓┴╠(SCALE$(0,2)(2:))-1
1140 ┼╬─╔╞
1150 ┼╬─├┴╙┼ // END AXES DRAWING
1160
1170 ╞╧╥ I:=0 ╘╧ SCALE'DIVISIONS ─╧
1180 ├┴╙┼ AXIS ╧╞
1190 ╫╚┼╬ 0
1200 HOR:=XST+(XI*I); VERT:=YST
1210 NUM:=XST+I*XI
1220 ╫╚┼╬ 1
1230 HOR:=XST-4/INQ(30); VERT:=YST+(YI*I)
1240 NUM:=YST+I*YI
1250 ┼╬─├┴╙┼
1260 MOVETO(HOR,VERT)
1270 N$:=╙╘╥$(NUM)
1280 L:=╠┼╬(N$)
1290 L2:=L*.5
1300 ├┴╙┼ AXIS ╧╞
1310 ╫╚┼╬ 0 // CONDITIONS FOR LABELS
1320 X'START:=11/INQ(31)
1330 TEXTSTYLE(1,1,0,1)
1340 ├┴╙┼ SCALE$(0,1)(1) ╧╞ // X SCALE
1350 ╫╚┼╬ "N" // NUMBERS
1360 TICK:=2
1370 MOVETO(HOR,YST)
1380 ╔╞ XPIX/XN>10 ╘╚┼╬
1390 X'PRINT(HOR-4/INQ(30),YST-X'START,N$)
1400 ┼╠╔╞ XPIX/XN>5 ┴╬─ ╘╚┼╬ I ═╧─ 2=0 ╘╚┼╬
1410 X'PRINT(HOR-4/INQ(30),YST-X'START,N$)
1420 ┼╠╔╞ I ═╧─ 4=0 ╘╚┼╬
1430 X'PRINT(HOR-4/INQ(30),YST-X'START,N$)
1440 ┼╠╙┼
1450 TICK:=1
1460 ┼╬─╔╞
1470 DRAWTO(HOR,VERT-(TICK/INQ(31)))
1480 ╫╚┼╬ "A" // LETTERS EVEN SPACING
1490 X'PRINT(HOR-4/INQ(30),YST-X'START,SCALE$(I+1,1))
1500 DRAWTO(HOR,VERT-(TICK/INQ(31)))
1510 ╫╚┼╬ "V" // LETTERS SET POSITIONS
1520 X'PRINT(╓┴╠(SCALE$(5+2*I,1))-4/INQ(30),YST-X'START,SCALE$(4+2*I,1))
1530 MOVETO(╓┴╠(SCALE$(5+2*I,1)),YST)
1540 DRAW(0,-2/INQ(31))
1550 ┼╬─├┴╙┼
1560
1570 ╫╚┼╬ 1
1580 GAP:=1; TICK:=1
1590 PX:=HOR-(TICK+GAP+W*L)/INQ(30)
1600 PY:=VERT-(H*.5/INQ(31))
1610 ├┴╙┼ SCALE$(0,2)(1) ╧╞ // Y SCALE
1620 ╫╚┼╬ "N" // LETTERS EVEN SPACING
1630 ╔╞ YPIX/YN>10 ╘╚┼╬
1640 PLOTTEXT(PX,PY,N$)
1650 ┼╠╔╞ YPIX/YN>5 ┴╬─ I ═╧─ 2=0 ╘╚┼╬
1660 PLOTTEXT(PX,PY,N$)
1670 ┼╠╔╞ I ═╧─ 4=0 ╘╚┼╬
1680 PLOTTEXT(PX,PY,N$)
1690 ┼╠╙┼
1700 TICK:=3
1710 ┼╬─╔╞
1720 DRAWTO(HOR-TICK/INQ(30),VERT)
1730 ╫╚┼╬ "A"
1740 Y'START:=(╠┼╬(SCALE$(I,2))*8+6)/INQ(30)
1750 ╔╞ I<>0 ╘╚┼╬
1760 PLOTTEXT(XST-Y'START,VERT-4/INQ(31),SCALE$(I,2))
1770 ┼╬─╔╞
1780 ╫╚┼╬ "V" // LETTERS SET POSITIONS
1790 Y'CHAR'LEN:=(6+(╠┼╬(SCALE$(4+2*I,2)))*8)/INQ(30)
1800 PLOTTEXT(XST-Y'CHAR'LEN,╓┴╠(SCALE$(5+2*I,2))-4/INQ(31),SCALE$(4+2*I,2))
1810 ┼╬─├┴╙┼
1820 ┼╬─├┴╙┼
1830 ┼╬─╞╧╥ I // *** END DIVISION LOOP
1840 ┼╬─╞╧╥ AXIS
1850 // EXTRA AXES AND GRIDS
1860 CROSS'AXES
1870 ╔╞ VALUES(0,2)=╘╥╒┼ ┴╬─ ╘╚┼╬ TYPE<>1 ╘╚┼╬ GRID
1880 ╔╞ SCALE$(0,2)(1)="V" ╘╚┼╬ V'GRID(2)
1890 ╔╞ SCALE$(0,1)(1)="V" ╘╚┼╬ V'GRID(1)
1900 ┼╬─├┴╙┼ // END OF DRAWING AXES
1910 TEXTSTYLE(1,1,0,0) // FOR LABELS
1920 PLOTTEXT(XST+13/INQ(30),YEND+21/INQ(31),LABELS$(0))
1930 PLOTTEXT(XST-3/INQ(30),YEND+13/INQ(31),LABELS$(1))
1940 PLOTTEXT(XST-3/INQ(30),YEND+5/INQ(31),LABELS$(2))
1950 ├┴╙┼ TYPE ╧╞
1960 ╫╚┼╬ 1
1970 SCATTER'GRAPH
1980 ╫╚┼╬ 2
1990 LINE'GRAPH
2000 ╫╚┼╬ 3,4
2010 BAR'GRAPH
2020 ┼╬─├┴╙┼
2030
2040 ╨╥╧├ SCATTER'GRAPH
2050 VIEWPORT(OX+1,OX+XPIX,OY+1,OY+YPIX)
2060 ╞╧╥ K:=1 ╘╧ PAIRS ─╧
2070 PLOT(VALUES(K,1),VALUES(K,2))
2080 ┼╬─╞╧╥ K
2090 ┼╬─╨╥╧├ SCATTER'GRAPH
2100
2110 ╨╥╧├ LINE'GRAPH
2120 VIEWPORT(OX+1,OX+XPIX,OY+1,OY+YPIX)
2130 MOVETO(VALUES(1,1),VALUES(1,2))
2140 ╞╧╥ K:=1 ╘╧ PAIRS ─╧
2150 DRAWTO(VALUES(K,1),VALUES(K,2))
2160 ┼╬─╞╧╥ K
2170 ┼╬─╨╥╧├ LINE'GRAPH
2180
2190 ╨╥╧├ BAR'GRAPH
2200 VIEWPORT(OX-3,OX+XPIX+4,OY+1,OY+YPIX+4)
2210 ├┴╙┼ TYPE ╧╞
2220 ╫╚┼╬ 3
2230 START:=YST; OFFSET:=4/INQ(30); Y'UP:=1/INQ(31)
2240 ╔╞ YST<0 ┴╬─ ╘╚┼╬ YEND>0 ╘╚┼╬ START:=0
2250 ╔╞ YST<0 ┴╬─ ╘╚┼╬ YEND>0 ╘╚┼╬ START:=0
2260 ╫╚┼╬ 4
2270 ╔╞ XST<0 ┴╬─ ╘╚┼╬ XEND>0 ╘╚┼╬ START:=0
2280 START:=XST; OFFSET:=3/INQ(31); X'UP:=1/INQ(30)
2290 ╔╞ XST<0 ┴╬─ ╘╚┼╬ XEND>0 ╘╚┼╬ START:=0
2300 ┼╬─├┴╙┼
2310 ╞╧╥ I:=1 ╘╧ PAIRS ─╧
2320 // PLOT(VALUES(I,1)-5/INQ(30),VALUES(I,2)) // KEEP FOR TESTING
2330 ├┴╙┼ TYPE ╧╞
2340 ╫╚┼╬ 3
2350 HEIGHT:=VALUES(I,2)
2360 ╔╞ VALUES(I,2)>YEND ╘╚┼╬ HEIGHT:=YEND
2370 ╔╞ VALUES(I,2)<YST ╘╚┼╬
2380 ╔╞ START<>YST ╘╚┼╬
2390 HEIGHT:=YST+4/INQ(31)
2400 ┼╠╙┼
2410 HEIGHT:=YST
2420 ┼╬─╔╞
2430 ┼╬─╔╞
2440 PIXELS:=┴┬╙(╔╬╘((HEIGHT-START)*INQ(31)))
2450 ╔╞ PIXELS=0 ╘╚┼╬
2460 ╬╒╠╠
2470 ┼╠╔╞ ╙╟╬(VALUES(I,2))=-1 ┴╬─ ╘╚┼╬ START=0 ╘╚┼╬
2480 TEXTSTYLE(1,PIXELS,2,1)
2490 PLOTTEXT(VALUES(I,1)+OFFSET,START,├╚╥$(164))
2500 ┼╠╙┼
2510 TEXTSTYLE(1,PIXELS,0,1)
2520 PLOTTEXT(VALUES(I,1)-OFFSET,START+Y'UP,├╚╥$(164))
2530 ┼╬─╔╞
2540 ╔╞ VALUES(I,2)<YST ╘╚┼╬
2550 TEXTSTYLE(1,1,2,1)
2560 PLOTTEXT(VALUES(I,1)+OFFSET,YST+6/INQ(31),├╚╥$(94))
2570 ┼╠╔╞ VALUES(I,2)>YEND ╘╚┼╬
2580 TEXTSTYLE(1,1,0,1)
2590 PLOTTEXT(VALUES(I,1)-OFFSET,YEND-2/INQ(31),├╚╥$(94))
2600 ┼╬─╔╞
2610 ╫╚┼╬ 4
2620 HEIGHT:=VALUES(I,1)
2630 ╔╞ VALUES(I,1)>XEND ╘╚┼╬ HEIGHT:=XEND
2640 ╔╞ VALUES(I,1)<XST ╘╚┼╬
2650 ╔╞ START<>XST ╘╚┼╬
2660 HEIGHT:=XST+4/INQ(30)
2670 ┼╠╙┼
2680 HEIGHT:=XST
2690 ┼╬─╔╞
2700 ┼╬─╔╞
2710 PIXELS:=┴┬╙(╔╬╘((HEIGHT-START)*INQ(30)))
2720 ╔╞ PIXELS=0 ╘╚┼╬
2730 ╬╒╠╠
2740 ┼╠╔╞ ╙╟╬(VALUES(I,1))=-1 ┴╬─ ╘╚┼╬ START=0 ╘╚┼╬
2750 TEXTSTYLE(1,PIXELS,1,1)
2760 PLOTTEXT(START,VALUES(I,2)-OFFSET,├╚╥$(164))
2770 ┼╠╙┼
2780 TEXTSTYLE(1,PIXELS,3,1)
2790 PLOTTEXT(START+X'UP,VALUES(I,2)+OFFSET,├╚╥$(164))
2800 ┼╬─╔╞
2810 ╔╞ VALUES(I,1)<XST ╘╚┼╬
2820 TEXTSTYLE(1,1,1,1)
2830 PLOTTEXT(XST+4/INQ(30),VALUES(I,2)-OFFSET,├╚╥$(94))
2840 ┼╠╔╞ VALUES(I,1)>XEND ╘╚┼╬
2850 TEXTSTYLE(1,1,3,1)
2860 PLOTTEXT(XEND-2/INQ(30),VALUES(I,2)+OFFSET,├╚╥$(94))
2870 ┼╬─╔╞
2880 ┼╬─├┴╙┼
2890 ┼╬─╞╧╥ I
2900 ┼╬─╨╥╧├ BAR'GRAPH
2910
2920 ╨╥╧├ CROSS'AXES // WHEN RELEVANT
2930 ╔╞ ╙╟╬(YST)=-1 ┴╬─ ╘╚┼╬ ╙╟╬(YEND)=1 ╘╚┼╬
2940 MOVETO(XST-4/INQ(30),0)
2950 DRAWTO(XEND+4/INQ(30),0)
2960 ┼╬─╔╞
2970 ╔╞ ╙╟╬(XST)=-1 ┴╬─ ╘╚┼╬ ╙╟╬(XEND)=1 ╘╚┼╬
2980 MOVETO(0,YST)
2990 DRAWTO(0,YEND)
3000 ┼╬─╔╞
3010 ┼╬─╨╥╧├ CROSS'AXES
3020
3030 ╨╥╧├ GRID
3040 ╞╧╥ UP:=1 ╘╧ YN ─╧
3050 ╞╧╥ ALONG:=XST ╘╧ XEND ╙╘┼╨ XI ─╧
3060 PLOT(ALONG,YST+UP*YI)
3070 ┼╬─╞╧╥ ALONG
3080 ┼╬─╞╧╥ UP
3090 ┼╬─╨╥╧├ GRID
3100
3110 ╨╥╧├ V'GRID(SC)
3120 JUMP:=╓┴╠(SCALE$(5,SC))
3130 END'V:=╓┴╠(SCALE$(0,SC)(2:))*2+3
3140 ╔╞ SC=1 ╘╚┼╬
3150 V'ST:=YST; V'END:=YEND
3160 ┼╠╙┼
3170 V'ST:=XST; V'END:=XEND
3180 ┼╬─╔╞
3190 ╞╧╥ K:=5 ╘╧ END'V ╙╘┼╨ 2 ─╧
3200 ╞╧╥ P:=V'ST ╘╧ V'END ╙╘┼╨ 4/INQ(32-SC) ─╧
3210 ╔╞ SC=2 ╘╚┼╬ PLOT(P,JUMP)
3220 ╔╞ SC=1 ╘╚┼╬ PLOT(JUMP,P)
3230 ┼╬─╞╧╥ P
3240 ╔╞ K<END'V ╘╚┼╬ JUMP:+(╓┴╠(SCALE$(K+2,SC)))-(╓┴╠(SCALE$(K,SC)))
3250 ┼╬─╞╧╥ K
3260 ┼╬─╨╥╧├ V'GRID
3270
3280 ╨╥╧├ STORE(HOLD)
3290 ├┴╙┼ HOLD ╧╞
3300 ╫╚┼╬ ╘╥╒┼
3310 ╞╧╥ K:=7 ╘╧ 26 ─╧
3320 HI(K):=INQ(K)
3330 ┼╬─╞╧╥ K
3340 ╫╚┼╬ ╞┴╠╙┼ //ENTER AS NEEDED
3350 TEXTSTYLE(HI(7),HI(8),HI(9),HI(10))
3360 VIEWPORT(HI(19),HI(20),HI(21),HI(22))
3370 ┼╬─├┴╙┼
3380 ┼╬─╨╥╧├ STORE
3390
3400 ╞╒╬├ FIND'LENGTH(BEG,EN,ST,SC)
3410 LENGTH:=0
3420 ╞╧╥ K:=BEG ╘╧ EN ╙╘┼╨ ST ─╧
3430 C'LEN:=╠┼╬(SCALE$(K,SC))
3440 ╔╞ LENGTH<C'LEN ╘╚┼╬ LENGTH:=C'LEN
3450 ┼╬─╞╧╥ K
3460 ╥┼╘╒╥╬ LENGTH*8 // IN PIXELS
3470 ┼╬─╞╒╬├ FIND'LENGTH
3480 ╞╒╬├ FIND'NO'LENGTH(NOST,NOEND,NOI) // SCALE NOS
3490 LEN'NO:=0
3500 ╞╧╥ K:=NOST ╘╧ NOEND ╙╘┼╨ NOI ─╧
3510 ╔╞ LEN'NO<╠┼╬(╙╘╥$(K)) ╘╚┼╬ LEN'NO:=╠┼╬(╙╘╥$(K))
3520 ┼╬─╞╧╥ K
3530 ╥┼╘╒╥╬ LEN'NO*8 // PIXELS
3540 ┼╬─╞╒╬├ FIND'NO'LENGTH
3550
3560 ╨╥╧├ X'PRINT(X,Y,STRING$)
3580 ╞╧╥ K:=1 ╘╧ ╠┼╬(STRING$) ─╧
3590 ╔╞ STRING$(K)=├╚╥$(46) ╘╚┼╬
3600 PLOTTEXT(X,Y+2/INQ(31),STRING$(K))
3610 ┼╠╙┼
3620 PLOTTEXT(X,Y,STRING$(K))
3630 ┼╬─╔╞
3640 Y:-8/INQ(31)
3650 ┼╬─╞╧╥ K
3660 ┼╬─╨╥╧├ X'PRINT
3670
3680 STORE(0) // RESET VALUES
3690 //WINDOW(HI(23),HI(24),HI(25),HI(26)) // RESETS ORIGINAL WINDOW
3700 ┼╬─╨╥╧├ U'GRAPH